// 定义一个名为Start的类，用于启动和测试生产者和消费者的多线程行为。
public class Start {

	// debug方法用于设置和启动生产者与消费者的线程。
	public void debug(){

		// 创建五个生产者对象，每个生产者的标识和要生产的产品数量不同。
		Producer p1 = new Producer("p1", 10);
		Producer p2 = new Producer("p2", 20);
		Producer p3 = new Producer("p3", 50);
		Producer p4 = new Producer("p4", 100);
		Producer p5 = new Producer("p5", 500);  // 注意p5试图生产的产品数量可能超过缓冲区上限。

		// 创建五个消费者对象，每个消费者的标识和想要消费的产品数量不同。
		Consumer c1 = new Consumer("c1", 10);
		Consumer c2 = new Consumer("c2", 20);
		Consumer c3 = new Consumer("c3", 30);
		Consumer c4 = new Consumer("c4", 50);
		Consumer c5 = new Consumer("c5", 50);

		// 为每个生产者和消费者创建线程。
		Thread t1 = new Thread(p1);
		Thread t2 = new Thread(p2);
		Thread t3 = new Thread(p3);
		Thread t4 = new Thread(p4);
		Thread t5 = new Thread(p5);
		Thread t6 = new Thread(c1);
		Thread t7 = new Thread(c2);
		Thread t8 = new Thread(c3);
		Thread t9 = new Thread(c4);
		Thread t10 = new Thread(c5);

		// 启动所有消费者线程。
		t6.start();
		t7.start();
		t8.start();
		t9.start();
		t10.start();
		// 启动所有生产者线程。
		t1.start();
		t2.start();
		t3.start();
		t4.start();
		t5.start();
	}

	// main方法是Java程序的入口点。
	public static void main(String[] args) {
		// 创建Start对象，并调用debug方法来运行生产者和消费者的模拟。
		Start start = new Start();
		start.debug();
	}
}
